package com.example.docmanagement.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 用户登录请求 DTO
 * 用户通过邮箱或用户名登录系统
 * 
 * 示例 JSON（使用邮箱登录）:
 * {
 * "email": "user@example.com",
 * "password": "password123"
 * }
 * 
 * 示例 JSON（使用用户名登录）:
 * {
 * "email": "zhangsan",
 * "password": "password123"
 * }
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "用户登录请求")
public class LoginRequest {

    /**
     * 邮箱或用户名（必填）
     * 支持两种登录方式：
     * 1. 使用邮箱登录，例如："user@example.com"
     * 2. 使用用户名登录，例如："zhangsan"
     * 系统会自动判断输入的是邮箱还是用户名
     * 示例："user@example.com" 或 "zhangsan"
     */
    @Schema(description = "邮箱或用户名", example = "user@example.com", required = true)
    @NotBlank(message = "邮箱/用户名不能为空")
    private String email;

    /**
     * 登录密码（必填）
     * 用户账号的登录密码
     * 密码要求：至少6个字符
     * 注意：密码通过HTTPS传输，后端会进行BCrypt加密存储
     * 示例："password123"
     */
    @Schema(description = "登录密码", example = "password123", required = true, minLength = 6)
    @NotBlank(message = "密码不能为空")
    private String password;
}
